package com.qiyang.stream;

import java.util.Random;
import java.util.stream.Stream;

/**
 * Created on 2018/8/6.
 *
 * @author sehuaqi.
 * 描述：
 */
public class StreamDemo3 {


    public static void main(String args[]) {
        //执行函数

        String str = "My name is 007";
        //打印每个单词的长度
        Stream.of(str.split(" ")).map(s -> s.length()).forEach(System.out::println);
        //加filter
        Stream.of(str.split(" ")).filter(s -> s.length() > 2).map(s -> s.length()).forEach(System.out::println);

        System.out.println("======flatMap======");
        //flatMap A -> B 属性（是个集合），最终得到所有的A元素里面的所有B属性集合
        //intStream/longStream 并不是Stream的子类，所以要进行装箱 boxed
        Stream.of(str.split(" ")).flatMap(s -> s.chars().boxed()).forEach(System.out::println);
        System.out.println("============");
        Stream.of(str.split(" ")).flatMap(s -> s.chars().boxed()).forEach(i -> System.out.println((char) i.intValue()));

        System.out.println("======peek======");
        //peek 用于 debug,是个中间操作，也是终止操作
        Stream.of(str.split(" ")).peek(System.out::println).forEach(System.out::println);

        System.out.println("======limit======");
        //limit 主要用于无限流
        new Random().ints().filter(i -> i > 100 && i < 1000).limit(2000).forEach(System.out::println);
    }
}
